package itheima.ZuoYe02;

import java.util.Objects;

/*
定义一个“年龄异常类”：AgeException，使其继承自RuntimeException，并添加无参、String参数的构造方法；
定义一个“性别异常类”：SexException，使其继承自RuntimeException，并添加无参、String参数的构造方法；
定义一个Student类，属性：姓名、性别、年龄。
在性别的set方法中判断是否是男/女，如果不是则抛出：性别异常
在年龄的set方法中判断年龄是否是15--50之间，如果不是则抛出：年龄异常
编写测试类，创建一个Student对象，并在try{}中调用setXxx()方法为对象属性赋值，在catch()中打印异常信息。
 */
public class Student {
   private String name;
   private String sex;
   private int age;

    public Student() {
    }

    public Student(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        if ("男".equals(sex)||"女".equals(sex)){
            this.sex = sex;
        }else {
            throw new SexException();
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age>15&&age<50){
            this.age = age;
        }else {
            throw new AgeException();
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name) &&
                Objects.equals(sex, student.sex);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, sex, age);
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}
